import Vue from 'vue';
import iView from 'iview';
import VueRouter from 'vue-router';
import Routers from './router';
import Util from './libs/util';
import App from './app.vue';
import 'iview/dist/styles/iview.css';
import $ from 'zepto';
import axios from "axios"
import Interface from "./interface"


Vue.use(VueRouter);
Vue.use(iView);
Vue.prototype.Axios=axios;
Vue.prototype.Interface=Interface;

// 路由配置
const RouterConfig = {
    mode: 'history',
    routes: Routers
};
const router = new VueRouter(RouterConfig);
// 在路由加载完成之前，修改页面标题title
router.beforeEach((to, from, next) => {
    iView.LoadingBar.start();
    Util.title(to.meta.title);
    next();
});
// 在页面加载完成之后，显示loading条
router.afterEach((to, from, next) => {
    iView.LoadingBar.finish();
    window.scrollTo(0, 0);
});

// Axios 请求拦截器
axios.interceptors.request.use(function (config) {
	// 在发送请求之前做些什么    
    // iView.$Spin.show();
	return config;
}, function (error) {   
	// 对请求错误做些什么
    // iView.$Message.error('请求过程中发生了错误~');
	return Promise.reject(error);
});

// 添加响应拦截器
axios.interceptors.response.use(function (response) {
    // iView.$Spin.hide();
	// 对响应数据做点什么
	try {
		if (typeof (response.data.data) == "string") {
			var Data = JSON.parse(response.data.data);
			response.data.data = Data
		}
	} catch (e) {        
        // iView.$Message.error('处理返回的数据发生异常~');
	}
	return response;
}, function (error) {
	// 对响应错误做点什么    
    // iView.$Spin.hide();
    // iView.$Message.error('服务器开小差了~');
	return Promise.reject(error);
});



new Vue({
    el: '#app',
    router: router,
    render: h => h(App)
});
